#ifndef _MENU_H_
#define _MENU_H_
#include "sys.h"
#define COUNT_OF(A) (sizeof(A) / sizeof(*(A)))//
typedef struct Menu *PTmenu;
typedef struct  Menuitem
{
     unsigned char *name ;//
     void          (*menufunc)(void);
     void          (*updownfunc)(void);
     PTmenu        PTsubmenu;//子菜单
}Tmenuitem,*PTmenuitem;

typedef struct Menu
{  unsigned char *name ;         //name
    PTmenuitem    PTmenuitems;
    unsigned char menuitem_number;//number of item

}Tmenu,*PTmenu;
typedef enum 
{
 BUTTON_UP_EVENT =0,
 BUTTON_DOWN_EVENT ,
 BUTTON_SURE_EVENT, 
 BUTTON_CANCEL_EVENT ,
 NO_INPUT,
}InputState;
	
typedef struct MenuOperation
{  
  	InputState STATE;
	 void (*FDownFunc)(void);
	 void (*FUpFunc)(void);
	 void (*FSelFunc)(void);
	 void (*FReturnFunc)(void);

}TMenuOperation,*PTMenuOperation;
extern TMenuOperation STMenuOperation;
 extern int params_flag;
#define  ITEM_H  16   
#define  ITEM_W 16   
#define  maxlines 9
void MainMenuInit(void);
void IdleFunc(void);
void UpFunc(void);
void DownFunc(void);
void SelFunc(void);
void ReturnFunc(void);
void Angle_kd_sub(void);
void Angle_kd_add(void);
void Angle_kp_add(void);
void Angle_kp_sub(void);
void Angle_save(void);
void Velocity_kp_add(void);
void Velocity_kp_sub(void);
void Velocity_ki_add(void);
void Velocity_ki_sub(void);
void Velocity_save(void);
void Angle_med_sub(void);
void Angle_med_add(void);
void Angle_med_save(void);
void N20_kp_add(void);
void N20_kp_sub(void);
void N20_ki_add(void);
void N20_ki_sub(void);
void N20_save(void);
void N20_med_add(void);
void N20_med_sub(void);
void N20_med_save(void);
void Open_params(void);
void Close_params(void);
#endif
